package top.shiyiri.datetime;

import org.junit.Test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author Aunean
 * @date 2022/1/2
 */
/*
jdk8 之前的日期时间的API测试
SimpleDateFormat
 */
public class SimpleDateFormatTest {

    /*
    SimpleDateFormat 的使用：SimpleDateFormat 对日期 Date 类的格式化和解析
    1.两个操作：
    1.1 格式化：日期 -> 字符串
    1.2 解析：格式化的逆过程，字符串 -> 日期
     */
    @Test
    public void SimpleDateFormatTest1() throws ParseException {
        //实例化 SimpleDateFormat
        SimpleDateFormat sdf = new SimpleDateFormat();
        System.out.println(sdf);//java.text.SimpleDateFormat@b5341f2a

        Date date = new Date();
        System.out.println(date);//Sun Jan 02 20:35:36 CST 2022

        //格式化：日期 -> 字符串
        String format = sdf.format(date);
        System.out.println(format);//22-1-2 下午8:35

        //解析：格式化的逆过程，字符串 -> 日期
        String str = "22-1-2 下午8:39";
        Date date1 = sdf.parse(str);
        System.out.println(date1);

        //按照指定的方式进行格式化
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println(sdf1.format(date));//2022.01.02

        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        System.out.println(sdf2.format(date));//2022-01-02 08:42:37
    }

    /*
    练习一：字符串 "2020-01-02" 转换为 java.sql.Date
     */
    @Test
    public void test2() throws ParseException {
        String s1 = "2020-01-02";
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Date date = format.parse(s1);

        java.sql.Date date2 = new java.sql.Date(date.getTime());
        System.out.println(date2);
    }

    /*
    练习二：“三天打渔两天晒网” 2001-01-01  2021-03-14 打渔？晒网
     */
    @Test
    public void test3() throws ParseException {
        String startTime = "2001-01-01";
        String endTime = "2021-03-14";

        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Date startParse = format.parse(startTime);
        Date endParse = format.parse(endTime);

        long day = (endParse.getTime() - startParse.getTime()) / (1000 * 60 * 60 * 24) + 1;
        System.out.println(day);
        int c = (int) day % 5;
        System.out.println(day % 5);
        switch (c) {
            case 0:
            case 4:
                System.out.println("晒网");
                break;
            default:
                System.out.println("打渔");
        }
    }

    @Test
    public void test4() throws ParseException {

        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date parse = format.parse("2019-12-31 23:59:59");
        System.out.println(parse);

        SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date parse2 = format2.parse("2019-12-31 23:59:59");
        System.out.println(parse2);

        SimpleDateFormat format3 = new SimpleDateFormat("yyyy-MM-dd");
        Date parse3 = format3.parse("2020-01-01");
        System.out.println(parse3);
    }
}
